home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / workbench / directoryopus4 / dopus4_src / config / config.h < prev    next >
C/C++ Source or Header  |  2000-03-11  |  24KB  |  979 lines

  1. /*
  2.  
  3. Directory Opus 4
  4. Original GPL release version 4.12
  5. Copyright 1993-2000 Jonathan Potter
  6.  
  7. This program is free software; you can redistribute it and/or
  8. modify it under the terms of the GNU General Public License
  9. as published by the Free Software Foundation; either version 2
  10. of the License, or (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  20.  
  21. All users of Directory Opus 4 (including versions distributed
  22. under the GPL) are entitled to upgrade to the latest version of
  23. Directory Opus version 5 at a reduced price. Please see
  24. http://www.gpsoft.com.au for more information.
  25.  
  26. The release of Directory Opus 4 under the GPL in NO WAY affects
  27. the existing commercial status of Directory Opus 5.
  28.  
  29. */
  30.  
  31. //#include <fctype.h>
  32. #include <string.h>
  33. #include <stdlib.h>
  34. #include <stdarg.h>
  35. #include <stddef.h>
  36. #include <exec/types.h>
  37. #include <exec/memory.h>
  38. #include <exec/execbase.h>
  39. #include <dos/dos.h>
  40. #include <dos/dosextens.h>
  41. #include <dos/exall.h>
  42. #include <intuition/intuitionbase.h>
  43. #include <intuition/sghooks.h>
  44. #include <graphics/gfxbase.h>
  45. #include <graphics/gfxmacros.h>
  46. #include <workbench/workbench.h>
  47. #include <workbench/startup.h>
  48. #include <proto/all.h>
  49.  
  50. #include <proto/dopus.h>
  51. #undef CONFIG_VERSION
  52.  
  53. #define NUM_MODULES 4
  54.  
  55. #define OSVER_34 0
  56. #define OSVER_37 1
  57. #define OSVER_38 2
  58. #define OSVER_39 3
  59. #define OSVER_40 4
  60.  
  61. #define GAD_BASE 1000
  62. #define STRING_BASE 10000
  63. #define REQ_BASE 11000
  64.  
  65. #define CONFIG_STRUCTURE_SIZE 9200
  66.  
  67. #define OLD_CONFIG_VERSION 9999
  68. #define CONFIG_VERSION 10000
  69. #define CONFIG_MAGIC 0xFACE
  70.  
  71. enum {
  72.     FONT_GENERAL,
  73.     FONT_DIRS,
  74.     FONT_TEXT,
  75.     FONT_GADGETS,
  76.     FONT_MENUS,
  77.     FONT_STATUS,
  78.     FONT_NAMES,
  79.     FONT_CLOCK,
  80.     FONT_REQUEST,
  81.     FONT_STRING,
  82.     FONT_ICONIFY,
  83.     FONT_SCREEN,
  84.  
  85.     FONT_COUNT};
  86.  
  87. #define FFLAG_8ONLY   1
  88. #define FFLAG_NOPROP  2
  89.  
  90. #define NUMFLAGS 16
  91. #define MAXFUNCS 32
  92. #define HIDDENLINES 6
  93.  
  94. #define FB_OUTPUTWIN    0
  95. #define FB_OUTPUTFILE   1
  96. #define FB_WB2F         2
  97. #define FB_DOPUS2F      3
  98. #define FB_RUNASYNC     4
  99. #define FB_CDSOURCE     5
  100. #define FB_CDDEST       6
  101. #define FB_DOALLFILES   7
  102. #define FB_RECURSEDIR   8
  103. #define FB_RELOADFILE   9
  104. #define FB_AUTOICONIFY  10
  105. #define FB_NOQUOTE      11
  106. #define FB_RESCANSOURCE 12
  107. #define FB_RESCANDEST   13
  108. #define FB_SHELLSTARTUP 14
  109. #define FB_DOPUSSTARTUP 15
  110.  
  111. #define FF_OUTPUTWIN    (1<<FB_OUTPUTWIN)
  112. #define FF_OUTPUTFILE   (1<<FB_OUTPUTFILE)
  113. #define FF_WB2F         (1<<FB_WB2F)
  114. #define FF_DOPUS2F      (1<<FB_DOPUS2F)
  115. #define FF_RUNASYNC     (1<<FB_RUNASYNC)   
  116. #define FF_CDSOURCE     (1<<FB_CDSOURCE)
  117. #define FF_CDDEST       (1<<FB_CDDEST)
  118. #define FF_DOALLFILES   (1<<FB_DOALLFILES)
  119. #define FF_RECURSEDIR   (1<<FB_RECURSEDIR)
  120. #define FF_RELOADFILE   (1<<FB_RELOADFILE)
  121. #define FF_AUTOICONIFY  (1<<FB_AUTOICONIFY)
  122. #define FF_NOQUOTE      (1<<FB_NOQUOTE)
  123. #define FF_RESCANSOURCE (1<<FB_RESCANSOURCE)
  124. #define FF_RESCANDEST   (1<<FB_RESCANDEST)
  125. #define FF_SHELLSTARTUP (1<<FB_SHELLSTARTUP)
  126. #define FF_DOPUSSTARTUP (1<<FB_DOPUSSTARTUP)
  127.  
  128. #define SFB_AUTOICONIFY  0
  129. #define SFB_CDDEST       1
  130. #define SFB_CDSOURCE     2
  131. #define SFB_DOPUS2F      3
  132. #define SFB_DOALLFILES   4
  133. #define SFB_DOPUSSTARTUP 5
  134. #define SFB_SHELLSTARTUP 6
  135. #define SFB_NOQUOTE      7
  136. #define SFB_OUTPUTFILE   8
  137. #define SFB_OUTPUTWIN    9
  138. #define SFB_RECURSEDIR   10
  139. #define SFB_RELOADFILE   11
  140. #define SFB_RESCANDEST   12
  141. #define SFB_RESCANSOURCE 13
  142. #define SFB_RUNASYNC     14
  143. #define SFB_WB2F         15
  144.  
  145. #define FT_INTERNAL     0
  146. #define FT_EXECUTABLE   1
  147. #define FT_WORKBENCH    2
  148. #define FT_BATCH        3
  149. #define FT_AREXX        4
  150.  
  151. #define FT_REQUESTER    5
  152. #define FT_CHDIR       99
  153.  
  154. #define FC_INTERNAL     '*'
  155. #define FC_WORKBENCH    '%'
  156. #define FC_BATCH        '$'
  157. #define FC_AREXX        '&'
  158. #define FC_REQUESTER    '@'
  159. #define FC_CHDIR        '!'
  160.  
  161. #define MENUCOUNT 100
  162. #define GADCOUNT 84
  163. #define DRIVECOUNT 32
  164. #define NUMFONTS 16
  165. #define USEDRIVECOUNT 30
  166.  
  167. #define FTYC_MATCH        1
  168. #define FTYC_MATCHNAME    2
  169. #define FTYC_MATCHBITS    3
  170. #define FTYC_MATCHCOMMENT 4
  171. #define FTYC_MATCHSIZE    5
  172. #define FTYC_MATCHDATE    6
  173. #define FTYC_MOVETO       7
  174. #define FTYC_MOVE         8
  175. #define FTYC_SEARCHFOR    9
  176. #define FTYC_OR         253
  177. #define FTYC_AND        254
  178. #define FTYC_ENDSECTION 255
  179.  
  180. #define FTYC_ENDLIMIT   252
  181. #define FTYC_COMMANDOK   10
  182. #define FTYC_CYCLEEND    12
  183.  
  184. #define FILETYPE_FUNCNUM   16
  185. /*
  186. struct dopusfunction {
  187.     char name[16];
  188.     int which,stack;
  189.     unsigned char key,qual;
  190.     char type,pri,delay;
  191.     char fpen,bpen;
  192.     char pad;
  193.     char *function;
  194. };
  195. */
  196. /*
  197. struct newdopusfunction {
  198.     char *name;
  199.     char *image[2];
  200.     int pad2;
  201.     int which,stack;
  202.     unsigned char key,qual;
  203.     char type,pri,delay;
  204.     char fpen,bpen;
  205.     char pad;
  206.     char *function;
  207. };
  208. */
  209. /*
  210. struct newdopusfunction {
  211.     char *name;
  212.     int pad2[3];
  213.     int which,stack;
  214.     unsigned char key,qual;
  215.     char type,pri,delay;
  216.     char fpen,bpen;
  217.     char pad;
  218.     char *function;
  219. };
  220. */
  221. /*
  222. struct dopusfiletype {
  223.     struct dopusfiletype *next;
  224.     char type[32];
  225.     char typeid[8];
  226.     char actionstring[FILETYPE_FUNCNUM][40];
  227.     int which[FILETYPE_FUNCNUM],stack[FILETYPE_FUNCNUM];
  228.     char pri[FILETYPE_FUNCNUM],delay[FILETYPE_FUNCNUM];
  229.     unsigned char *recognition;
  230.     char *function[FILETYPE_FUNCNUM];
  231.     char *iconpath;
  232. };
  233. */
  234. struct fileclass {
  235.     struct fileclass *last,*next;
  236.     char type[32];
  237.     char typeid[8];
  238.     unsigned char *recognition;
  239. };
  240. /*
  241. struct dopusgadgetbanks {
  242.     struct newdopusfunction gadgets[GADCOUNT];
  243.     struct dopusgadgetbanks *next;
  244. };
  245. */
  246. /*
  247. struct dopushotkey {
  248.     struct dopushotkey *next;
  249.     UWORD code,qualifier;
  250.     char name[40];
  251.     struct dopusfunction func;
  252. };
  253. */
  254. /*
  255. struct Config {
  256.     USHORT version;
  257.     USHORT magic;
  258.  
  259.     char copyflags;
  260.     char deleteflags;
  261.     char errorflags;
  262.     unsigned char generalflags;
  263.     char iconflags;
  264.     char existflags;
  265.     char sepflags;
  266.     char sortflags;
  267.     char dynamicflags;
  268.     char sortmethod[2];
  269.  
  270.     char hotkeyflags;
  271.  
  272.     char menutit[5][16];
  273.     struct newdopusfunction menu[MENUCOUNT];
  274.  
  275.     struct dopusfunction drive[DRIVECOUNT];
  276.  
  277.     char outputcmd[80],output[80];
  278.     int gadgetrows;
  279.  
  280.     char separatemethod[2];
  281.  
  282.     char language[30];
  283.  
  284.     char displaypos[2][16];
  285.     char displaylength[2][16];
  286.  
  287.     char pubscreen_name[80];
  288.  
  289.     USHORT Palette[16];
  290.     char gadgettopcol,gadgetbotcol;
  291.     char statusfg,statusbg;
  292.     char filesfg,filesbg,filesselfg,filesselbg;
  293.     char dirsfg,dirsbg,dirsselfg,dirsselbg;
  294.     char clockfg,clockbg;
  295.     char requestfg,requestbg;
  296.     char disknamefg,disknamebg,disknameselfg,disknameselbg;
  297.     char slidercol,arrowfg,arrowbg,littlegadfg,littlegadbg;
  298.  
  299.     char pad3;
  300.  
  301.     char scrdepth;
  302.     char screenflags;
  303.     int screenmode;
  304.     int scrw,scrh;
  305.     char fontbuf[40];
  306.     char arrowpos[3];
  307.  
  308.     char pad4;
  309.  
  310.     char startupscript[80];
  311.     char dirflags;
  312.     unsigned char bufcount;
  313.  
  314.     char pad5[2];
  315.  
  316.     char autodirs[2][30];
  317.     char pad5a[80];
  318.     UWORD hotkeycode,hotkeyqual;
  319.  
  320.     char toolicon[80],projecticon[80],drawericon[80],defaulttool[80];
  321.     char priority;
  322.     char showdelay,viewbits,fadetime,tabsize;
  323.  
  324.     char pad7[2];
  325.  
  326.     char hiddenbit;
  327.     char showpat[40],hidepat[40];
  328.     char showpatparsed[40],hidepatparsed[40];
  329.     char icontype,scrclktype,showfree;
  330.  
  331.     char pad8;
  332.  
  333.     short iconx,icony;
  334.     short wbwinx,wbwiny;
  335.  
  336.     char configreturnscript[80];
  337.  
  338.     char fontsizes[NUMFONTS];
  339.     char fontbufs[NUMFONTS][40];
  340.  
  341.     char uniconscript[80];
  342.     char sliderbgcol;
  343.  
  344.     char pad_foo;
  345.  
  346.     short scr_winx,scr_winy;
  347.     short scr_winw,scr_winh;
  348.  
  349.     char morepadding[231];
  350.  
  351.     char old_displaypos[2][8];
  352.     char dateformat,addiconflags;
  353.     char stringfgcol,stringbgcol;
  354.     char namelength[2];
  355.     char sliderwidth,sliderheight;
  356.     char formatflags;
  357.     short iconbutx,iconbuty;
  358.     char stringheight;
  359.     char stringselfgcol,stringselbgcol;
  360.     char generalscreenflags;
  361.  
  362.     struct Rectangle scrollborders[2];
  363.  
  364.     char old_displaylength[2][8];
  365.  
  366.     char shellstartup[30];
  367.  
  368.     char windowdelta;
  369.  
  370.     char pad9a[397];
  371.  
  372.     int loadexternal;
  373.  
  374.     ULONG new_palette[48];
  375.  
  376.     char arrowsize[3];
  377.  
  378.     char slider_pos;
  379.  
  380.     short config_x;
  381.     short config_y;
  382.  
  383.     char pad10[1414];
  384. };
  385. */
  386. struct dopusconfigmsg {
  387.     struct Message msg;
  388.     int command;
  389.     char *buffer;
  390. };
  391.  
  392. #define CONFIG_GET_CONFIG 1
  393. #define CONFIG_HERES_CONFIG 2
  394. #define CONFIG_ALL_DONE 3
  395. #define CONFIG_NEW_HOTKEY 4
  396. #define CONFIG_HOTKEYS_CHANGE 5
  397.  
  398. struct configconfig {
  399.     struct Config *config;
  400.     struct dopusfiletype *firsttype;
  401.     struct DOpusRemember *typekey;
  402.     struct dopusgadgetbanks *firstbank;
  403.     int changed;
  404.     char configname[256];
  405.     struct Window *Window;
  406.     struct Screen *Screen;
  407.     struct dopushotkey *firsthotkey;
  408. };
  409.  
  410. extern struct ExtNewScreen configscr;
  411. extern struct NewWindow configwin,requestwin;
  412. extern struct ExecBase *SysBase;
  413. extern struct DOpusBase *DOpusBase;
  414. extern struct GfxBase *GfxBase;
  415. extern struct DosLibrary *DOSBase;
  416. extern struct IntuitionBase *IntuitionBase;
  417. extern struct Screen *Screen;
  418. extern struct Window *Window;
  419. extern struct ViewPort *vp;
  420. extern struct RastPort *rp;
  421. extern struct Process *myproc;
  422. extern struct IntuiMessage *IMsg;
  423. extern APTR wsave,realwsave;
  424. extern char *spacestring;
  425. extern char fontbuf[50];
  426. extern struct TextAttr sfont,bsfont;
  427. extern struct Config *config,*undoconfig;
  428. extern struct dopusfiletype *firsttype;
  429. extern struct dopushotkey *firsthotkey;
  430. extern struct dopusgadgetbanks *firstbank,*curbank;
  431. extern struct DOpusRemember *typekey,*fontkey;
  432. extern char configname[256],loadnamebuf[256];
  433. extern char filebuf[32],dirbuf[258];
  434. extern struct DOpusFileReq filereq;
  435. extern int version2;
  436. extern struct MsgPort *conport,*cmdport,*appport;
  437. /*
  438. extern struct MsgPort *clip_port;
  439. extern struct IOClipReq *clip_io;
  440. */
  441. /*
  442. struct ConfigStuff {
  443.     struct Config *config;
  444.     struct DOpusRemember *typekey;
  445.     struct dopusfiletype *firsttype;
  446.     struct dopusgadgetbanks *firstbank,*curbank;
  447.     struct dopushotkey *firsthotkey;
  448. };
  449. */
  450. extern struct ConfigStuff cstuff;
  451. extern struct DOpusRemember *mainkey,*gadgetkey,*tickkey,*screenkey,*clipkey,*buttonkey;
  452. extern struct Gadget *maingad,*tickgad,*gadgads,*menugads,*drivegads;
  453. extern int tickcount;
  454. extern struct dopusconfigmsg msg;
  455.  
  456. extern struct TagItem taglist[2];
  457. extern UWORD drawinfo[];
  458. extern int lchanged,changed;
  459.  
  460. extern struct Image
  461.     *checkonimage,*checkoffimage,
  462.     *buttononimage,*buttonoffimage,
  463.     copy_checkonimage,copy_checkoffimage;
  464.  
  465. #define CTYPE_MOVEREL -3
  466. #define CTYPE_MOVE -2
  467. #define CTYPE_SKIP -1
  468. #define CTYPE_TEXT 1
  469. #define CTYPE_GAD  2
  470. #define CTYPE_STR  3
  471. #define CTYPE_REQ  4
  472. #define CTYPE_RAD  5
  473. #define CTYPE_MRAD  6
  474.  
  475. struct ConfigGadget {
  476.     char type;
  477.     char value;
  478.     int nameentry;
  479.     short x,y;
  480.     short w,h;
  481.     int bit;
  482.     int mutualex;
  483.     char *buffer;
  484.     struct Gadget *gad;
  485. };
  486.  
  487. #define CFG_MAINMENU  11
  488. #define CFG_GADGET    0
  489. #define CFG_DRIVE     1
  490. #define CFG_FILETYPE  2
  491. #define CFG_HOTKEYS   3
  492. #define CFG_MENU      4
  493. #define CFG_OPERATION 5
  494. #define CFG_SCREEN    6
  495. #define CFG_SYSTEM    7
  496. #define CFG_SAVE      8
  497. #define CFG_OKAY      9
  498. #define CFG_CANCEL    10
  499.  
  500. #define OP_COPY       0
  501. #define OP_DATEFORMAT 1
  502. #define OP_DELETE     2
  503. #define OP_ERRORCHECK 3
  504. #define OP_GENERAL    4
  505. #define OP_ICONS      5
  506. #define OP_FORMAT     6
  507. #define OP_UPDATE     7
  508. #define OP_OKAY       8
  509. #define OP_CANCEL     9
  510.  
  511. #define SYS_AMIGADOS    0
  512. #define SYS_CLOCK       1
  513. #define SYS_DIRECTORIES 2
  514. #define SYS_HOTKEYS     3
  515. #define SYS_ICONS       4
  516. #define SYS_MODULES     5
  517. #define SYS_SHOWPATTERN 6
  518. #define SYS_STARTUP     7
  519. #define SYS_VIEWPLAY    8
  520. #define SYS_OKAY        9
  521. #define SYS_CANCEL      10
  522.  
  523. #define GAD_NEXTBANK     0
  524. #define GAD_NEWBANK      1
  525. #define GAD_COPYBANK     2
  526. #define GAD_SWAPBANK     3
  527. #define GAD_DELETEBANK   4
  528. #define GAD_COPYGADGET   5
  529. #define GAD_SWAPGADGET   6
  530. #define GAD_DELETEGADGET 7
  531. #define GAD_OKAY         8
  532. #define GAD_CANCEL       9
  533.  
  534. #define MENU_COPYMENU    0
  535. #define MENU_SWAPMENU    1
  536. #define MENU_DELETEMENU  2
  537. #define MENU_SORTMENU    3
  538. #define MENU_INSERTITEM  4
  539. #define MENU_COPYITEM    5
  540. #define MENU_SWAPITEM    6
  541. #define MENU_DELETEITEM  7
  542. #define MENU_OKAY        8
  543. #define MENU_CANCEL      9
  544. #define MENU_MOVEUP     10
  545. #define MENU_MOVEDOWN   11
  546. #define MENU_SLIDER     12
  547.  
  548. #define DRIVE_GETDRIVES   0
  549. #define DRIVE_COPYBANK    1
  550. #define DRIVE_SWAPBANK    2
  551. #define DRIVE_DELETEBANK  3
  552. #define DRIVE_SORTBANK    4
  553. #define DRIVE_COPYDRIVE   5
  554. #define DRIVE_SWAPDRIVE   6
  555. #define DRIVE_DELETEDRIVE 7
  556. #define DRIVE_OKAY        8
  557. #define DRIVE_CANCEL      9
  558. #define DRIVE_EDITNAME   10
  559. #define DRIVE_EDITSAMPLE 11
  560. #define DRIVE_EDITREQ    12
  561. #define DRIVE_EDITPATH   13
  562.  
  563. #define FILETYPE_NEW          0
  564. #define FILETYPE_SWAP         1
  565. #define FILETYPE_DELETE       2
  566. #define FILETYPE_OKAY         3
  567. #define FILETYPE_CANCEL       4
  568.  
  569. #define HOTKEYS_NEWHOTKEY     0
  570. #define HOTKEYS_DELETE        1
  571. #define HOTKEYS_DUPLICATE     2
  572. #define HOTKEYS_OKAY          3
  573. #define HOTKEYS_SWAP          4
  574. #define HOTKEYS_CANCEL        5
  575.  
  576. #define EDIT_OKAY             0
  577. #define EDIT_CANCEL           1
  578. #define EDIT_EDITCLASS        2
  579. #define EDIT_NAME             3
  580. #define EDIT_SAMPLE           4
  581. #define EDIT_NEWENTRY         5
  582. #define EDIT_DUPLICATE        6
  583. #define EDIT_SWAP             7
  584. #define EDIT_DELETE           8
  585. #define EDIT_STACK            9
  586. #define EDIT_PRIORITY        10
  587. #define EDIT_DELAY           11
  588. #define EDIT_TYPE            12
  589. #define EDIT_FUNC            13
  590. #define EDIT_REQUESTER       14
  591. #define EDIT_PATH            15
  592. #define EDIT_ARGREQ          16
  593. #define EDIT_FILETYPEACTION  17
  594.  
  595. #define CLASS_OKAY           0
  596. #define CLASS_CANCEL         1
  597. #define CLASS_TYPE           3
  598. #define CLASS_NEWENTRY       4
  599. #define CLASS_DUPLICATE      5
  600. #define CLASS_SWAP           6
  601. #define CLASS_DELETE         7
  602. #define CLASS_OPERATION      8
  603. #define CLASS_FUNC           9
  604. #define CLASS_FILEVIEWREQ    10
  605. #define CLASS_FILEVIEW       11
  606. #define CLASS_HEXDEC         12
  607. #define CLASS_VIEWSLIDER     13
  608. #define CLASS_VIEWUP         14
  609. #define CLASS_VIEWDOWN       15
  610. #define CLASS_TYPEID         16
  611.  
  612. #define EDIT_FUNCTIONS    1
  613. #define EDIT_FLAGS        2
  614. #define EDIT_FUNCTIONTYPE 3
  615.  
  616. #define SCREEN_ARROWS     0
  617. #define SCREEN_COLOURS    1
  618. #define SCREEN_FONTS      2
  619. #define SCREEN_GENERAL    3
  620. #define SCREEN_PALETTE    4
  621. #define SCREEN_SCREENMODE 5
  622. #define SCREEN_SLIDERS    6
  623. #define SCREEN_OKAY       7
  624. #define SCREEN_CANCEL     8
  625.  
  626. #define PALETTE_SLIDER    100
  627. #define PALETTE_STRING    103
  628.  
  629. #define COLOURS_SELECT    200
  630.  
  631. #define SCREENMODE_WIDTH      300
  632. #define SCREENMODE_HEIGHT     301
  633. #define SCREENMODE_DEPTH      302
  634. #define SCREENMODE_DEFWIDTH   303
  635. #define SCREENMODE_DEFHEIGHT  304
  636. #define SCREENMODE_HALFHEIGHT 305
  637. #define SCREENMODE_SLIDER     306
  638.  
  639. #define HOTKEY_SAMPLE     400
  640. #define HOTKEY_MMB        401
  641.  
  642. #define FORMAT_MAXNUM 9
  643.  
  644. #define FORMAT_WINDOW      500
  645. #define FORMAT_RESET       501
  646. #define FORMAT_CLEAR       502
  647. #define FORMAT_LENGTH      503
  648. #define FORMAT_SEPARATE    510
  649. #define FORMAT_REVERSESORT 511
  650.  
  651. #define ICON_ICONREQ       600
  652. #define ICON_ICONPATH      601
  653. #define ICON_TOOLREQ       602
  654. #define ICON_TOOLPATH      603
  655.  
  656. #define ARROWBASE          600
  657. #define ARROWCYCLE         610
  658.  
  659. #define FONT_SIZE 700
  660.  
  661. #define SCREEN_SLIDER_LEFTCYCLE 800
  662. #define SCREEN_SLIDER_RIGHTCYCLE 801
  663.  
  664. #define COLBIT_STATUS        0
  665. #define COLBIT_SELDISKNAME   1
  666. #define COLBIT_DISKNAME      2
  667. #define COLBIT_SELDIRECTORY  3
  668. #define COLBIT_DIRECTORY     4
  669. #define COLBIT_SELFILE       5
  670. #define COLBIT_FILE          6
  671. #define COLBIT_SLIDERS       7
  672. #define COLBIT_ARROWS        8
  673. #define COLBIT_TINYGADS      9
  674. #define COLBIT_CLOCK         10
  675. #define COLBIT_REQUESTER     11
  676. #define COLBIT_3DBOXES       12
  677. #define COLBIT_STRINGS       13
  678. #define COLBIT_SELSTRINGS    14
  679.  
  680. #define COLOURS_STATUS       (1<<COLBIT_STATUS)
  681. #define COLOURS_SELDISKNAME  (1<<COLBIT_SELDISKNAME)
  682. #define COLOURS_DISKNAME     (1<<COLBIT_DISKNAME)
  683. #define COLOURS_SELDIRECTORY (1<<COLBIT_SELDIRECTORY)
  684. #define COLOURS_DIRECTORY    (1<<COLBIT_DIRECTORY)
  685. #define COLOURS_SELFILE      (1<<COLBIT_SELFILE)
  686. #define COLOURS_FILE         (1<<COLBIT_FILE)
  687. #define COLOURS_SLIDERS      (1<<COLBIT_SLIDERS)
  688. #define COLOURS_ARROWS       (1<<COLBIT_ARROWS)
  689. #define COLOURS_TINYGADS     (1<<COLBIT_TINYGADS)
  690. #define COLOURS_CLOCK        (1<<COLBIT_CLOCK)
  691. #define COLOURS_REQUESTER    (1<<COLBIT_REQUESTER)
  692. #define COLOURS_3DBOXES      (1<<COLBIT_3DBOXES)
  693. #define COLOURS_STRINGS      (1<<COLBIT_STRINGS)
  694. #define COLOURS_SELSTRINGS   (1<<COLBIT_SELSTRINGS)
  695.  
  696. #define COLOURS_ALL          ~0
  697.  
  698. struct ColourSel {
  699.     char item;
  700.     short x1,y1,x2,y2;
  701. };
  702.  
  703. extern struct ColourSel coloursel[];
  704.  
  705. extern char
  706.     *mainmenugads[14],
  707.     *listviewgads[3],
  708.     *listviewgads2[4],
  709.     *operationgads[14],
  710.     *systemgads[14],
  711.     *gadgetgads[11],
  712.     *functypelist[],
  713.     ftype_funcmap[],
  714.     *functypestr[],
  715.     *editfuncgads[6],
  716.     *editfuncgads2[16],
  717.     *gadflaglist[17],
  718.     *editclassgads[10],
  719.     *menugadgets[11],
  720.     *drivegadgets[11],
  721.     *drivegadgets2[5],
  722.     *screengadgets[14],
  723.     *formatgadgets[10],
  724.     *hotkeygadgets[3],
  725.     *arrowgadtxt[4],
  726.     *arrowtypetxt[3],
  727.     *filetypeactiongadgets[11],
  728.  
  729.     *commandlist[95],
  730.     *arglist[18],
  731.     *classopslist[12],
  732.  
  733.     *formatnames[FORMAT_MAXNUM+1],
  734.     *selectedformatnames[FORMAT_MAXNUM+1],
  735.  
  736.     *defdir[],
  737.     *palettegadgets[],*coloursgadgets[],
  738.     *screenmodegadgets[],
  739.     *hotkeysgadgets[],
  740.     *windownames[2],*errorcheckingtxt[],*separatenames[3];
  741.  
  742. extern struct ConfigGadget
  743.     *operationgadgets[8],*systemgadgets[9],scr_generalgadgets[];
  744.  
  745.  
  746. #define UNDO_MAIN      1
  747. #define UNDO_GADGET    2
  748. #define UNDO_MENU      4
  749. #define UNDO_FILETYPE  8
  750. #define UNDO_DRIVE     16
  751. #define UNDO_HOTKEYS   32
  752. #define UNDO_ALL       (UNDO_MAIN|UNDO_GADGET|UNDO_MENU|UNDO_FILETYPE|UNDO_DRIVE|UNDO_HOTKEYS)
  753.  
  754. struct ConfigUndo {
  755.     struct Config *config;
  756.     struct newdopusfunction *menu;
  757.     struct dopusfunction *drive;
  758.     struct dopusfiletype *firsttype;
  759.     struct dopusgadgetbanks *firstbank;
  760.     struct DOpusRemember *key;
  761.     struct dopushotkey *firsthotkey;
  762.     char menutit[5][16];
  763. };
  764.  
  765. extern struct ConfigUndo *makeundo();
  766. extern char *getcopy(),*compilefunclist(),**makefiletypelist(),**makeclasslist();
  767. extern struct dopusgadgetbanks *lastbank();
  768.  
  769. extern int fontplaceflags[],fontplacevals[];
  770. extern struct RMBGadget nextbankrmb,insertbankrmb,formatclearrmb,sampleclearrmb;
  771. extern struct DOpusListView
  772.     editlists[3],cmdlist,screenmodeview,listlist,iconlistview,
  773.     fontsizelistview,fontlistview,fontplacelist,editclasslist,hotkeyslist,
  774.     helplist,filetypeactionlist,
  775.     modulelist,languagelist;
  776. extern char *external_module_list[],*external_module_name[];
  777. extern int external_module_map[];
  778.  
  779. extern struct Gadget
  780.     editfuncgadgets[15],cmdcancelgad,menuslidergads[3],editdrivegadgets[4],
  781.     palettegads[6],coloursgad,screenmodegads[7],editclassgadgets[14],
  782.     listokaygad[3],formatgads[10],hotkeygad,hotkeymmbgad,arrowgadgets[8],
  783.     fontsizegadget,helpgad,helpcancelgad,draggad,icongads[4],depthgads[2],
  784.     screen_sliders_gadgets[];
  785.  
  786. extern struct Image menusliderimage;
  787. extern struct PropInfo menusliderprop,paletteprop[3];
  788.  
  789. extern char
  790.     edit_namebuf[256],edit_stackbuf[7],edit_prioritybuf[5],edit_delaybuf[3],
  791.     edit_funcbuf[256],edit_pathbuf[256],edit_actionbuf[40],
  792.     palette_buf[3][4],screenwidth_buf[6],screenheight_buf[6],screendepth_buf[3],
  793.     formatlen_buf[5][3],fontsize_buf[12],edit_typeidbuf[8];
  794.  
  795. extern struct StringInfo namesinfo,funcsinfo;
  796.  
  797. #ifdef __SASC_60
  798. extern __chip USHORT
  799.     glass_data[2][18],uparrow_data[6],downarrow_data[6],
  800.     pageflip_data1[5],pageflip_data2[3];
  801. #else
  802. extern USHORT
  803.     __chip glass_data[2][18],
  804.     __chip uparrow_data[6],
  805.     __chip downarrow_data[6],
  806.     __chip leftarrow_data[6],
  807.     __chip rightarrow_data[6],
  808.     __chip pageflip_data1[5],
  809.     __chip pageflip_data2[3];
  810. #endif
  811.  
  812. extern struct IntuiMessage *getintuimsg();
  813.  
  814. extern struct newdopusfunction *selgad;
  815. extern struct Gadget *seligad;
  816.  
  817. struct ScreenMode {
  818.     struct ScreenMode *next;
  819.     char name[80];
  820.     UWORD minw,minh;
  821.     UWORD maxw,maxh;
  822.     UWORD defw,defh;
  823.     UWORD maxdepth;
  824.     ULONG mode;
  825. };
  826.  
  827. #define MODE_WORKBENCHUSE        1
  828. #define MODE_WORKBENCHCLONE      2
  829. #define MODE_PUBLICSCREENUSE     3
  830. #define MODE_PUBLICSCREENCLONE   4
  831.  
  832. extern char **screenmodelist;
  833. extern struct ScreenMode *firstmode,*screenmode;
  834. extern struct ScreenMode *showdisplaydesc(),*getscreenmode();
  835.  
  836. #define SCRFLAGS_DEFWIDTH   1
  837. #define SCRFLAGS_DEFHEIGHT  2
  838. #define SCRFLAGS_HALFHEIGHT 4
  839.  
  840. extern struct MenuItem
  841.     projectitems[],edititems[],gadrowsitems[],classitems[],neatstuffitem;
  842. extern struct Menu projectmenu,editmenu,gadrowsmenu,classmenu,neatstuffmenu;
  843.  
  844. extern int changed,curoperation,clipcount;
  845.  
  846. struct Clip {
  847.     struct Clip *next;
  848.     char name[256];
  849.     struct dopusfunction func;
  850. };
  851.  
  852. extern struct Clip *firstclip;
  853.  
  854. extern USHORT defpalettes[11][4],def_dopus_palette[16];
  855. extern struct DOpusListView palettelist,listformatlists[2];
  856. extern int rowtrans[5];
  857.  
  858. extern struct Library *DiskfontBase;
  859. extern struct Library *WorkbenchBase;
  860. extern struct Library *IconBase;
  861. extern struct PPBase *PPBase;
  862. extern struct TextFont *tfont;
  863. extern char
  864.     *fontdatabuf,**fontlist,*(**fontsizelist),
  865.     **noproplist,*(**nopropsizelist),
  866.     **only8list,*only8sizelist[];
  867.  
  868. extern int gadflagvals[];
  869.  
  870. extern struct fileclass *firstclass;
  871. extern int classopvals[];
  872. extern char classname[256];
  873. extern struct DOpusRemember *helpkey;
  874. extern char *helpbuffer;
  875. extern int helpsize;
  876. extern char currenthelpname[256];
  877.  
  878. extern char **fileclasslist;
  879. extern char *fileclasstype[];
  880. extern char maxlength[5];
  881.  
  882. extern struct StringExtend stringex;
  883.  
  884. extern struct DiskObject dropboxobj;
  885. extern void *appobject;
  886. extern struct AppMessage *appmsg;
  887.  
  888. #define MY_APPOBJECT 1
  889.  
  890. extern unsigned char *fileview_buf;
  891. extern int fileview_lines,fileview_size,fileview_topline,fileview_type,fileview_oldtop;
  892. extern int fileview_offset,fileview_position;
  893. extern char *fileview_types[];
  894.  
  895. extern char *icontypes[],*palettenames[14],*fontplacenames[FONT_COUNT+1];
  896.  
  897. extern struct IntuiText
  898.     newtext,opentext,savetext,saveastext,cuttext,copytext,
  899.     pastetext,erasetext,newclasstext,editclasstext,deleteclasstext,
  900.     clearclasstext,duplicateclasstext,clearcliptext,
  901.     gadrowstext[5],paintmodetext;
  902.  
  903. extern int network;
  904.  
  905. extern char *ftype_funcs[];
  906.  
  907. extern struct StringData stringdata;
  908.  
  909. extern short func_list_items[];
  910.  
  911. extern struct Border *gadget_dog_sel_border,*gadget_dog_unsel_border;
  912. extern struct Border *gadget_sel_border,*gadget_unsel_border;
  913.  
  914. extern int x_off,y_off,x_bot,y_bot;
  915. extern char help_ok;
  916. extern int paint_state,paint_fg,paint_bg;
  917.  
  918. extern int screen_depth;
  919.  
  920. extern short
  921.     editfuncgadgets_xy[15][2],
  922.     editdrivegadgets_xy[4][2],
  923.     menuslidergads_xy[3][2],
  924.     palettegads_xy[6][2],
  925.     coloursgad_xy[2],
  926.     screenmodegads_xy[7][2],
  927.     formatgads_xy[10][2],
  928.     icongads_xy[4][2],
  929.     hotkeymmbgad_xy[2],
  930.     hotkeygad_xy[2],
  931.     arrowgadgets_xy[8][2],
  932.     fontsizegadget_xy[2],
  933.     editclassgadgets_xy[14][2],
  934.     screen_sliders_gadgets_xy[2][2];
  935.  
  936. #define FTFUNC_AUTOFUNC1   0
  937. #define FTFUNC_AUTOFUNC2   1
  938. #define FTFUNC_DOUBLECLICK 2
  939. #define FTFUNC_CLICKMCLICK 3
  940. #define FTFUNC_ANSIREAD    4
  941. #define FTFUNC_AUTOFUNC3   5
  942. #define FTFUNC_HEXREAD     6
  943. #define FTFUNC_LOOPPLAY    7
  944. #define FTFUNC_PLAY        8
  945. #define FTFUNC_AUTOFUNC4   9
  946. #define FTFUNC_READ        10
  947. #define FTFUNC_SHOW        11
  948.  
  949. #define FREQ_FILETYPE  10
  950. #define FREQ_FILECLASS 11
  951. #define FREQ_ARGREQ    12
  952. #define FREQ_PATHREQ   20
  953. #define FREQ_GENERIC   21
  954.  
  955. struct ColourTable {
  956.     ULONG red;
  957.     ULONG green;
  958.     ULONG blue;
  959.     unsigned char pen;
  960.     char alloc;
  961. };
  962.  
  963. extern struct ColourTable screen_pens[16];
  964.  
  965. extern short colour_box_xy[2][16][4],colour_box_num;
  966.  
  967. extern struct ScreenMode *curmode;
  968. extern ULONG palette_backup[48];
  969. extern struct DOpusRemember *borderkey;
  970. extern short palettegad_xy[16][4];
  971. extern int bpg;
  972.  
  973. extern char *left_right_cycle[3];
  974.  
  975. #include "configstrings.h"
  976.  
  977. #include "functions.h"
  978.  
  979.